﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using Model;

namespace HRP.Private.Empresa
{
    public partial class CriarEmpresa : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["idclient"] != null)
            {
                formPanel.Visible = true;
                errorPanel.Visible = false;
                msgPanel.Visible = false;
                //Label1.Visible = false;
                if (PodeCriar())
                {
                    if (!Page.IsPostBack)
                    {
                        carregarPaises();
                        carregarActividades();
                    }
                }
                else
                {
                    errorMsgLabel.Text = "Atingiu o limite máximo de empresas no pacote que adquiriu. Faça um upgrade!";
                    formPanel.Visible = false;
                    errorPanel.Visible = true;
                }
            }
        }

        void carregarActividades() {
            paisesDL.DataSource = Utilidade_BLL.Instance.ObterListaPaises();
            paisesDL.DataBind();
        }

        void carregarPaises() {
            ramoDL.DataSource = Utilidade_BLL.Instance.obterRamosActividades();
            ramoDL.DataBind();
        }

        private bool PodeCriar()
        {
            //validar se cliente ainda pode registar mais empresa
            var listaEmpresas = Cliente_BLL.Instance.ObterEmpresasDoClienteTotal((int)Session["idclient"]);
            var pacote_cliente = Cliente_BLL.Instance.obterProdutoCliente(Convert.ToInt32(Session["idclient"]));
            return listaEmpresas.Count < pacote_cliente.nempresas;
        }

        protected void criarEmpresaBT_Click(object sender, EventArgs e)
        {

            //valida se ja existe empresa com esse nif
            if (Empresa_BLL.Instance.VerificarEmpresaExiste(nomeTB.Text.Trim()) || Empresa_BLL.Instance.verificarNIFEmpresaExiste(nifTB.Text.Trim()))
            {
                errorMsgLabel.Text = "Já existe uma empresa registada com esse mesmo Número Contribuinte ou Nome.";
                formPanel.Visible = true;
                msgPanel.Visible = false;
                errorPanel.Visible = true;
                return;
            }

            //caminho logo
            string pathrec = "";
            if (FileUpload1.HasFile && FileUpload1.PostedFile.ContentType.StartsWith("image"))
            {
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                string path = Server.MapPath("/images/" + empresa.id + "/") + FileUpload1.PostedFile.FileName;

                string path1 = Server.MapPath("/images/" + empresa.id + "/");
                if (!System.IO.Directory.Exists(path1))
                {
                    System.IO.Directory.CreateDirectory(path1);
                }
                FileUpload1.PostedFile.SaveAs(path);
                //gravar na bd caminho de imagem
                int index = path.LastIndexOf("images");
               pathrec  = path.Substring(index - 1, (path.Count() - index + 1));
            }
            else
            { 
            pathrec="'\'images'\'logo.png";
            }


            //ramo actividade
            int ramo = 0;
            Int32.TryParse(ramoDL.SelectedValue, out ramo);
            //iso pais
            int iso_pais = 0;
            Int32.TryParse(paisesDL.SelectedValue, out iso_pais);
            int result = 0;
            result = Empresa_BLL.Instance.criarEmpresa(Convert.ToInt32(Session["idclient"]), Session["userid"].ToString(),
                nomeTB.Text, moradaTB.Text, codigoPostalTB.Text,Convert.ToInt32(paisesDL.SelectedValue), pathrec, nifTB.Text,
                ssTB.Text, emailTB.Text, telefoneTB.Text, tlmTB.Text, faxTB.Text,ramo , Request.UserHostAddress.ToString(),websiteTB.Text,sobreTB.Text);

            if (result > 0)
            {
                Empresa_BLL.Instance.activarEmpresaUserUpdate(result, Convert.ToInt32(Session["userid"]), true);
                Label1.Text = "Empresa Registada com Sucesso! Obrigado";
                formPanel.Visible = false;
                msgPanel.Visible = true;
                errorPanel.Visible = false;
                Session["CrieiEmpresa"] = true;
                return;
            }
            else {
                errorMsgLabel.Text = "Ocorreu um erro a registar a empresa.";
                formPanel.Visible = true;
                msgPanel.Visible = false;
                errorPanel.Visible = true;
                return;
            
            }

        }



    }
}